package main

import (
	"context"
	"fmt"

	"github.com/go-redis/redis/v8"
)
 
var ctx = context.Background()
var rdb = redis.NewClient(&redis.Options{
	Addr:     "localhost:6379",
	Password: "", // no password set
	DB:       1,  // use default DB
	PoolSize: 3,
})

func main() {
	// c, err := redis.Dial("tcp", "127.0.0.1:6379")
	// if err != nil {
	// 	fmt.Println("Connect to redis error", err)
	// 	return
	// }
	// defer c.Close()
	// _, err = c.Do("SELECT", "1")
	// if err != nil {
	// 	fmt.Println("Select redis database index error", err)
	// 	return
	// }
	// defer c.Close()

	// _, err = c.Do("SET", "mykey", "superWang")
	// if err != nil {
	// 	fmt.Println("redis set failed:", err)
	// }
	// fmt.Println("设置成功.")
	// // var data = []interface{}{}
	// data, err := redis.Values(c.Do("georadius", "ship", "120", "32", "1000", "km"))
	// if err != nil {
	// 	fmt.Println("georadius get failed", err)
	// }
	// fmt.Println(reflect.TypeOf(data))
	// fmt.Println(data)
	keys, _ := rdb.Keys(ctx, "*").Result()
	fmt.Println("keys: ", keys)
	vals, err := rdb.GeoRadius(ctx, "ship", 120, 32, &redis.GeoRadiusQuery{
		Radius: 10000,
		Unit:   "km",
		Count:  2,
	}).Result()
	if err != nil {
		fmt.Println("georadius get failed", err)
	}

	fmt.Println("vals: ", vals)
	// data, _ := json.Marshal(vals)
	// fmt.Println(data)
}

// var ctx = context.Background()

// func Connect() *redis.Client {
// 	rdb := redis.NewClient(&redis.Options{
// 		Addr:     "localhost:6379",
// 		Password: "", // no password set
// 		DB:       0,  // use default DB
// 		PoolSize: 3,
// 	})
// 	return rdb
// }

// func ExampleClient() {
// 	rdb := Connect()
// val, err := rdb.Get(ctx, "foo").Result()
// if err != nil {
// 	panic(err)
// }
// fmt.Println("foo", val)

// val2, err := rdb.Get(ctx, "key2").Result()
// if err == redis.Nil {
// 	fmt.Println("key2 does not exist")
// } else if err != nil {
// 	panic(err)
// } else {
// 	fmt.Println("key2", val2)
// }
// Output: key value
// key2 does not exist
// iter := rdb.Scan(ctx, 0, "*", 0).Iterator()
// vals, _ := rdb.Keys(ctx, "*").Result()
// 	var nums []string
// 	sids := []string{"water_level", "key", "dyn_data"}
// 	for k := range sids {
// 		nums = append(nums, sids[k])
// 	}
// 	vals, _ := rdb.MGet(ctx, nums...).Result()
// 	fmt.Println(vals)
// tmp := []string{}
// for _, item := range vals {
// 	tmp = append(tmp, item.(string))
// }
// fmt.Println(tmp)
// fmt.Println(reflect.TypeOf(vals))

// if err != nil {
// 	panic(err)
// }
// fmt.Println(vals)

// for iter.Next(ctx) {
// 	tmp, err := rdb.Get(ctx, iter.Val()).Result()
// fmt.Println(iter.Val())
// 	fmt.Println(iter.Val(), tmp)
// 	if err != nil {
// 		panic(err)
// 	}
// }
// if err := iter.Err(); err != nil {
// 	panic(err)
// }

// }

// func main() {
// 	ExampleClient()
// }
